package main

import "fmt"

func main() {
	r1 := increment()
	v1 := r1()
	fmt.Println(v1)
	fmt.Println(r1())
	r2 := increment() //重新调用函数，前面的程序就会销毁  重新开始自增
	fmt.Println(r2())
	fmt.Println(r2())
	fmt.Println(r1()) //虽然程序销毁，但是它里面的变量还是会存在

}
func increment() func() int { //用匿名函数最为一个函数的返回值  就是闭包
	var i int = 0
	fun := func() int { //用fun接匿名函数返回的值
		i++
		return i
	}
	return fun //返回匿名函数所返回的值
}
